1. Field of the Invention
The present invention relates in general to computers, and more particularly to a method, system, and computer program product for facilitating data transfer between a nonvolatile storage (NVS) write cache and a pool of target storage devices.
2. Description of the Related Art
Storage devices such as disks are commonplace in today's society. Devices such as controllers control access to the storage devices in response to read and write requests. The storage controllers also mirror data to different storage devices and spread data amongst different storage devices for redundancy and backup purposes. Storage controllers may store data in accordance with one of several redundant array of independent disk (RAID) security levels. Generally, the higher the RAID level the greater the redundancy of the data storage. Pooled storage devices may be used to increase storage capacity and provide recovery and backup services.
Storage servers, such as an IBM® Enterprise Storage Server® (ESS), are also becoming commonplace. One IBM® ESS storage server includes two clusters of processors (controllers) and associated hardware. Typically, there are multiple processors in each cluster. Each of the storage controllers is responsible for multiple storage devices grouped in RAID arrays. In one environment, clients with Fibre Channel Host Bus Adapters (HBAs) are coupled via a Fibre Channel to a switch. The switch is also coupled to the Storage Server with Fibre Channel HBAs. There may be multiple storage servers per client. Each client is assigned or allocated storage “volumes” which are mapped to physical locations on storage devices that are grouped in RAID arrays. Consequently, clients make data access requests (reads and writes) to the storage server, for data within their allocated volumes, and the storage server accesses the mapped locations in cache storage to satisfy the requests or from disk if the data does not reside in cache storage.
One IBM® ESS comprises a storage controller with two clusters and four processors per cluster. Each cluster has its own cache (semiconductor) memory shared by all processors in the cluster. Each cluster also has nonvolatile storage (NVS) that is shared by all of the processors in the cluster. The cache memory is used for rapid access to data inpaged from external storage to service read data access requests from memory and to provide buffering of modified data. All write requests are written to the cache on the cluster managing a given volume and are mirrored in the nonvolatile memory on the other cluster.